跳到主要内容 跳到补充内容

For each..next

for each..next 控制语句是一个脚本迭代构造,可为逗号分隔列表中的每个值执行一个或几个语句。列表中的每个值均会执行由 fornext 限定的循环中的语句。

语法:  

特殊语法可以生成带有当前目录内文件和目录名称的列表。

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

参数:  

For each 参数
参数 说明
var 脚本变量名称,可为每次循环执行获取列表中的新值。如果 varnext 之后指定,变量名必须与对应的 for each 之后查找的变量名相同。

var 变量的值可通过循环内的语句进行更改,但这并非出色的编程做法。

如果在循环内遇到 exit for 子句,则脚本执行会转移至表示循环结束的 next 子句之后的第一个语句。exit for 子句可通过选择性使用 whenunless 后缀变为有条件子句。

信息注释由于 for each..next 语句是控制语句,并以分号或换行符结束,三个可能子句(for eachexit fornext)中任意一个子句都不得跨越行边界。

语法:  

list := item { , item }

item := constant | (expression) | filelist (mask) | dirlist (mask) | fieldvaluelist (fieldname)

 

List 参数
参数 说明
constant 任何数字或字符串。请注意,直接在脚本中写入的字符串必须附上单引号。没有单引号的字符串将被解释为变量,而变量的值之后将被使用。数字不必用单引号引起来。
expression 任意表达式。
mask

文件名称或文件夹名称掩码,包括任何有效的文件名称字符及标准通配符,比如 *?

condition 用于评估 TrueFalse 的逻辑表达式。
statements 一个或多个 QlikView 脚本语句的任意组。
filelist mask

该语法会在匹配文件名称掩码的当前目录中生成逗号分隔的全部文件列表。

dirlist mask

该语法会在匹配文件夹名称掩码的当前文件夹中生成逗号分隔的全部文件夹列表。

fieldvaluelist mask 此语法迭代已经加载到 QlikView 的字段值。
警告注释Qlik Web 存储提供程序连接器 以及其它 DataFiles 连接不支持使用通配符(*?)字符的筛选器掩码。

示例 1: 加载文件列表

// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv for each a in 1,3,7,'xyz' LOAD * from file$(a).csv; next

示例 2: 在磁盘上创建文件列表

此示例加载文件夹中所有 QlikView 相关文件的列表。

sub DoDir (Root) for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd' for each File in filelist (Root&'\*.' &Ext) LOAD '$(File)' as Name, FileSize( '$(File)' ) as Size, FileTime( '$(File)' ) as FileTime autogenerate 1; next File next Ext for each Dir in dirlist (Root&'\*' ) call DoDir (Dir) next Dir end sub call DoDir ('C:')

示例 3: 迭代字段值

此示例迭代已加载的 FIELD 值列表,并生成新字段 NEWFIELD。对每个 FIELD 值,都会创建两条 NEWFIELD 记录。

load * inline [ FIELD one two three ]; FOR Each a in FieldValueList('FIELD') LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2; NEXT a

最终生成的表格如下所示:

Example 3
NEWFIELD
one-1
one-2
two-1
two-2
three-1
three-2

了解详情

 

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们如何改进!

加入分析现代化计划

Remove banner from view

使用分析现代化计划实现现代化,同时不损害您宝贵的 QlikView 应用程序。 单击此处 了解更多信息或联系: ampquestions@qlik.com